/**
 * DAOUtilisateurSuivi.java    19/04/2012
 */

package l3.info.Projet.Serveur;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.StringTokenizer;

import l3.info.Projet.Utilitaires.Configuration;
import l3.info.Projet.Utilitaires.DialogueBD;

/**
 * Permet d'accéder à la base de données ayant pour relation
 * un UtilisateurSuivi
 * @author Loïc Martinez
 * @version 1.0
 */

public class DAOUtilisateurSuivi {

    /** Permet de charger la configuration de la base de données */
    private static Configuration conf = new Configuration(
            "configServer.properties");

    /** La connexion à la base de données */
    private static Connection conn = null;

    /**
     * Constructeur par défaut
     */
    public DAOUtilisateurSuivi() {
        conn = conn == null ? DialogueBD.connexionSQL(
                "jdbc:postgresql://localhost"
                        + (conf.valueOf("port").equals("") ? "" : ":")
                        + conf.valueOf("port")
                        + "/" + conf.valueOf("database"),
                        conf.valueOf("user"), conf.valueOf("password"))
                        : conn;
    }

    /**
     * Permet d'ajouter un utilisateur à suivre dans la base de données
     * @param myId, mon numUtilisateur
     * @param idASuivre, le numutilisateur de la personne à suivre
     * @param table, la table suivre
     * @return le pseudo de la personne suivie
     */
    public String insertSuivreUtilisateur(int myId, int idASuivre,
            String table) {
        return insertUtilisateurASuivre(table,
                idASuivre + ", " + myId);
    }

    /**
     * Permet d'ajouter un utilisateur à suivre dans la base de données
     * @param table, la table suivre
     * @param valeurs, le numUtilisateur de la personne à suivre
     * @return le pseudo de la personne suivie
     */
    private static String insertUtilisateurASuivre(String table,
            String valeurs) {
        try {
            DialogueBD.insertInto(conn, table, valeurs);
            // On récupère l'id à suivre
            StringTokenizer st = new StringTokenizer(valeurs, ",");
            String idSuivie = st.nextToken();
            // On va récupérer le pseudo de l'id suivie
            return DialogueBD.selectOneElementStringType(conn, "utilisateur",
                    "nomutilisateur", "numutilisateur = " + idSuivie);
        } catch (SQLException ex) {
            // L'utilisateur existe déjà
            return null;
        }
    }

    /**
     * Permet de supprimer un utilisateur que l'on ne veut plus suivre
     * dans la base de données
     * @param table, la table suivre
     * @param condition, la condition de suppression
     */
    public void removeUtilisateurASuivre(String table,
            String condition) {

        DialogueBD.deleteFrom(conn, table, condition);
    }

}